package com.anxin.act.task.dao;

import com.anxin.act.utils.ActTaskUtils;
import org.activiti.engine.task.Task;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 任务处理
 *
 * @author: liuxiangyu
 * @date: 2020/3/30 17:41
 */
public interface ActTaskDao {

    /**
     * 删除 act_hi_actinst 表记录
     *
     * @param taskId
     */
    public void delHiActInst(@Param("taskId") String taskId);

    /**
     * 删除 act_hi_taskinst 表记录
     *
     * @param taskId
     */
    public void delHiTaskInst(@Param("taskId") String taskId);


    /**
     * 根据taskId修改任务开始时间
     *
     * @param taskId
     */
    public void updateRuTaskStartTime(@Param("taskId") String taskId);

    /**
     * 根据taskId修改任务开始时间
     *
     * @param taskId
     */
    public void updateHiActInstStartTime(@Param("taskId") String taskId);

    /**
     * 根据taskId修改任务开始时间
     *
     * @param taskId
     */
    public void updateHiTaskInstStartTime(@Param("taskId") String taskId);

    /**
     * 修改审批人
     *
     * @param assignee
     * @param taskId
     */
    public void updateHiActInstAssignee(@Param("assignee") String assignee, @Param("taskId") String taskId);


    /**
     * 修改审批人
     *
     * @param assignee
     * @param taskId
     */
    public void updateHiTaskAssignee(@Param("assignee") String assignee, @Param("taskId") String taskId);


    /**
     * 将流程变量中的 nrOfInstances 改为1
     *
     * @param procInsId
     * @param executionId
     */
    public void updateNrOfCompletedInstances(@Param("procInsId") String procInsId, @Param("executionId") String executionId);

    /**
     * 修改流程审批人
     *
     * @param sourceUserName
     * @param targetUserName
     * @return
     */
    int updateApproval(@Param("sourceUserName") String sourceUserName, @Param("targetUserName") String targetUserName);

    /**
     * 修改待办任务名称
     * @param taskId
     */
    public void updateRuTaskName(@Param("taskId") String taskId,@Param("taskName") String taskName);

    /**
     * 修改已办任务名称
     * @param taskId
     */
    public void updateHiTaskName(@Param("taskId") String taskId,@Param("taskName") String taskName);

    /**
     * 获取项目负责人
     * @return
     */
    public String getDealPersonCharge(@Param("dealId") String dealId);

    /**
     * 获取基金负责人
     * @param fundId
     * @return
     */
    public String getFundPersonCharge(@Param("fundId")String fundId);

    /**
     * 根据taskId挂起任务
     * @param actId 流程实例ID
     * @param taskKey 流程Key
     */
    public void updateSuspensionStateByTaskKey(@Param("actId") String actId,@Param("taskKey")String taskKey,@Param("state")String state);

    /**
     * 根据TaskId挂起任务
     * @param taskId 任务ID
     */
    public void updateSuspensionStateByTaskId(@Param("taskId")String taskId,@Param("state")String state);


    /**
     * 修改activity的任务开始时间和结束时间
     * @param taskId 任务ID
     * @param startTime 启动时间
     * @param endTime 终止时间
     */
    public void updateActHiActInstTime(@Param("taskId") String taskId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 修改activity的任务开始时间和结束时间
     * @param taskId 任务ID
     * @param startTime 启动时间
     * @param endTime 终止时间
     */
    public void updateActHiTaskTime(@Param("taskId")String taskId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);


    /**
     * 修改待办任务开始时间
     * @param taskId 任务ID
     * @param createTime 开始时间
     */
    public void updateActRuTaskTime(@Param("taskId")String taskId, @Param("createTime") Date createTime);

    /**
     * 修改流程启动时间
     * @param id 流程ID
     * @param startTime 启动时间
     */
    public void updateProcinstStartTime(@Param("id")String id, @Param("startTime") Date startTime);


}
